import java.util.*;
/**
 * Class Room - a room in an adventure game.
 *
 * This class is part of the "World of Zuul" application. 
 * "World of Zuul" is a very simple, text based adventure game.  
 *
 * A "Room" represents one location in the scenery of the game.  It is 
 * connected to other rooms via exits.  The exits are labelled north, 
 * east, south, west.  For each direction, the room stores a reference
 * to the neighboring room, or null if there is no exit in that direction.
 * 
 * @author  Michael Kölling and David J. Barnes
 * @version 2016.02.29
 */
public class Room 
{
    public String description;
    private Map<String, Room> map;
    private Thing thing = null;
    private Monster monster = null;
    
    /**
     * Create a room described "description". Initially, it has
     * no exits. "description" is something like "a kitchen" or
     * "an open court yard".
     * @param description The room's description.
     */
    public Room(String description) 
    {
        this.description = description;
        this.map = new HashMap<>();
    }
    
    public Room(String description, Monster monster) {
        this(description);
        this.monster = monster;
    }
    
    public Room(String description, Thing thing, Monster monster) {
        this(description, thing);
        this.monster = monster;
    }
    
    public Room(String description, Thing thing){
            this(description);
            this.thing = thing;
    }
    
    public void setExit(String direction, Room exit){
        this.map.put(direction, exit);
    }
    
    public Room goRoom(String direction){
        return this.map.get(direction);
    }
    
    public Room goNext(String direction){
        return map.get(direction);
    }

    /**
     * @return The description of the room.
     */
    public String getDescription()
    {
        return description;
    }
    
    public void printInfo(){
        System.out.println("你现在正位于"+ description);
    }
    
    public Thing getThing(){
        return this.thing;
    }
    
    public void remove() {
        this.thing = null;
    }
    
    public Monster getMonster(){
        return this.monster;
    }
    
    public void removeMonster(){
        this.monster=null;
    }
    
    public void printExits(){
        System.out.print("Exits: ");
        for(String key : map.keySet()){
            System.out.print(key+" ");
        }
        System.out.println();
    }

    public boolean isEscapeExit(){
        if(this.getDescription() == "出口\n快看,那里就是出口,后面的怪物快要追上来了,快从那里离开吧！\n 逃生成功！游戏完成度75%")
            return true;
        return false;
    }
}
